﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insifo.WE;
using Microsoft.Reporting.WebForms;
using System.Collections.Specialized;

public partial class genTipoCambioMensualListar : ObjectPage
{

    #region CONSTANTES

    protected const string REPORTE_RUTA = "/Reports/GALEXITO_GEN/repTipoCambioMensual";
    protected const string EDITAR_RUTA = "~/gen/genTipoCambioMensualEditar.aspx";

    #endregion 

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        //Eventos del Master
        Master.MenuAccionEvento += new MasterPageMenuListarClickHandler(Master_MenuButton);
        if (!IsPostBack)
        {            
            Cargar();
            Listar();
        }
    }

    protected void Master_MenuButton(object sender, EventArgs e)
    {
        string strAccion = ((CommandEventArgs)e).CommandName;
        switch (strAccion)
        {
            case "Buscar":
                ucpagLista.NumeroPagina = 1;
                Listar();
                break;
            case "Nuevo":
                Nuevo();
                break;
            case "Exportar":
                Exportar();
                break;
            case "Imprimir":
                Imprimir();
                break;
        }
    }

    protected void ucpagLista_CambioPagina(object sender, EventArgs e)
    {
        Listar();
    }

    protected void lvLista_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        string strArg = e.CommandArgument.ToString();
        switch (e.CommandName)
        {
            case "Editar":
                Editar(strArg);
                break;
            case "Eliminar":
                Eliminar(strArg);
                break;
        }
    }

    protected void lvLista_ItemDataBound(object sender, ListViewItemEventArgs e)
    {
        ImageButton ibt;
        if (e.Item.ItemType == ListViewItemType.DataItem)
        {
            ibt = (ImageButton)e.Item.FindControl("ibtEliminar");
            Label lb = (Label)e.Item.FindControl("lblEstado");
            if (((Label)e.Item.FindControl("lblEstado")).Text == Constantes.ESTADO_ACTIVO_DESC)
            {
                ibt.ImageUrl = Constantes.ESTADO_ACTIVO_URL;
                ibt.ToolTip = Resources.resDiccionario.Inactivar;
            }
            else
            {
                ibt.ImageUrl = Constantes.ESTADO_INACTIVO_URL;
                ibt.ToolTip = Resources.resDiccionario.Activar;
            }
        }
    }

    #endregion 

    #region METODOS

    protected void Cargar()
    {
        //Master.Titulo.Text = "";
        ucpagLista.NumeroPagina = 1;
        ddlEstado.SelectedIndex = 0; //Estado Activo

        //Carga moneda de origen
        Util.loadComboAndItem(ddlIdMonedaOrigen, ListarMoneda(), "Descripcion", "IdMoneda", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        ////carga moneda de destino
        Util.loadComboAndItem(ddlIdMonedaDestino, ListarMoneda(), "Descripcion", "IdMoneda", string.Format("--{0}--", Resources.resDiccionario.Seleccione), "0");
        //Carga Estado
        Util.loadCombo(ddlEstado, ListarParametroDetalle(1, 1, Constantes.PARAMETRO_ESTADOREGISTRO), "Descripcion", "ParametroDetalle");
      
    }

    /// <summary>
    /// Método Lista
    /// </summary>
    /// <returns></returns>
    protected void Listar()
    {
        int intTotalFilas = 0, intFilasXPagina = 0;
        string strPeriodo = string.Empty, strEstado = string.Empty, strIdMonedaOrigen = string.Empty, strIdMonedaDestino = string.Empty;

        strPeriodo = txtDescripcion.Text.Trim();
        strEstado = ddlEstado.SelectedValue;
        strIdMonedaOrigen = ddlIdMonedaOrigen.SelectedValue;
        strIdMonedaDestino = ddlIdMonedaDestino.SelectedValue;
        
        //Filtrar
        DataTable dt = ListarTipoCambioMensual(strPeriodo, int.Parse(strIdMonedaOrigen), int.Parse(strIdMonedaDestino), strEstado, ucpagLista.NumeroPagina);
        lvLista.DataSource = dt;
        lvLista.DataBind();
        if (dt.Rows.Count > 0)
        {
            intFilasXPagina =  Convert.ToInt32(dt.Rows[0]["FilasXPagina"]);
            intTotalFilas = Convert.ToInt32(dt.Rows[0]["TotalFilas"]);
        }
        ucpagLista.TotalRegistros = intTotalFilas;
        ucpagLista.RegistrosPorPagina = intFilasXPagina;
        ucpagLista.EnlazarPaginador();
    }

    protected void Nuevo()
    {
        string strCadena = "?a=n";
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Editar(string pstrArg)
    {
        string strCadena = "?a=e&i=" + pstrArg;
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Eliminar(string pstrArg)
    {
        string strCadena = "?a=d&i=" + pstrArg;
        Util.Redireciona(EDITAR_RUTA, strCadena, true);
    }

    protected void Exportar()
    {
        UtilExcel ut = new UtilExcel();
        DataTable dt = ListarMoneda();
        dt.Columns.Remove("FilasXPagina");
        dt.Columns.Remove("TotalFilas");
        ut.ExportaAExcelHoja(dt, Resources.resDiccionario.Archivo, Resources.resDiccionario.Datos);
    }

    protected void Imprimir()
    {
        Util.ejecutaScriptAJAX(this.Page, string.Format("window.open('../rep/repPreview.aspx');"));
    }
    #endregion

    #region WEBSERVICES

    /// <summary>
    /// Método Lista Niveles de Alerta
    /// </summary>
    /// <returns>Devuelve un DataSet</returns>
    protected DataTable ListarTipoCambioMensual(string pstrPeriodo, int pinIdMonedaOrigen, int pinIdMonedaDestino, string pstrEstado, int pintPagina)
    {
        WCTipoCambioMensual.BETipoCambioMensual be = new WCTipoCambioMensual.BETipoCambioMensual();
        be.Periodo = pstrPeriodo;
        be.IdMonedaOrigen = pinIdMonedaOrigen;
        be.IdMonedaDestino = pinIdMonedaDestino;
        be.Estado = pstrEstado;
        be.Pagina = pintPagina;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCTipoCambioMensual.IWCTipoCambioMensual>("BasicHttpBinding_IWCTipoCambioMensual"))
        {
            var response = client.ServiceOperation<DataTable>(
               c => c.Listar(be).Tables[0]
               );
            ;
            dt = response;
        }
        return dt;
    }

    
    /// <summary>


    /// <summary>
    /// Método Lista Companias
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    protected DataTable ListarParametroDetalle(int pintidCompania, int pintIdAplicacion, string pstrParametro)
    {
        WCParametroDetalle.BEParametroDetalle be = new WCParametroDetalle.BEParametroDetalle();
        be.IdCompania = pintidCompania;
        be.IdAplicacion = pintIdAplicacion;
        be.Parametro = pstrParametro;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCParametroDetalle.IWCParametroDetalle>("BasicHttpBinding_IWCParametroDetalle"))
        {
            var response = client.ServiceOperation<DataTable>(c => c.Listar(be).Tables[0]);
            dt = response;
        }
        return dt;
    }

    /// <summary>
    /// Método Lista Monedas
    /// </summary>
    /// <returns>Devuelve un dataTable</returns>
    protected DataTable ListarMoneda()
    {
        WCMoneda.BEMoneda be = new WCMoneda.BEMoneda();
        be.Descripcion = "";
        be.Estado = "A";
        be.Pagina = 0;
        DataTable dt = new DataTable();
        using (var client = new ServiceClient<WCMoneda.IWCMoneda>("BasicHttpBinding_IWCMoneda"))
        {
            var response = client.ServiceOperation<DataTable>(
               c => c.Listar(be).Tables[0]
               );
            ;
            dt = response;
        }
        return dt;
    }

    #endregion

}